package org.example.demo.service;

import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service
@RequiredArgsConstructor
public class SpringAiService {

    // 注入ChatModel而不是已废弃的ChatClient
    private final ChatModel chatModel;

    /**
     * 简单聊天对话
     */
    public String getSimpleChatResponse(String userPrompt) {
        return chatModel.call(userPrompt);
    }

    /**
     * 使用模板的聊天对话
     */
    public String getChatResponseWithTemplate(String topic, String style) {
        String template = "请用{style}的风格来介绍{topic}，内容要详细且有趣。";
        PromptTemplate promptTemplate = new PromptTemplate(template);
        Prompt prompt = promptTemplate.create(Map.of(
            "topic", topic,
            "style", style
        ));
        return chatModel.call(prompt).getResult().getOutput().getContent();
    }

    /**
     * 代码生成助手
     */
    public String generateCode(String language, String description) {
        String template = "请用{language}编程语言生成代码，要求：{description}。请只返回代码，并添加必要的注释。";
        PromptTemplate promptTemplate = new PromptTemplate(template);
        Prompt prompt = promptTemplate.create(Map.of(
            "language", language,
            "description", description
        ));
        return chatModel.call(prompt).getResult().getOutput().getContent();
    }

    /**
     * 文本摘要
     */
    public String summarizeText(String text, int maxLength) {
        String template = "请将以下文本总结为不超过{maxLength}字的摘要：\n\n{text}";
        PromptTemplate promptTemplate = new PromptTemplate(template);
        Prompt prompt = promptTemplate.create(Map.of(
            "text", text,
            "maxLength", String.valueOf(maxLength)
        ));
        return chatModel.call(prompt).getResult().getOutput().getContent();
    }
}